[WIP] Differential Equation Function Transformations #141 #1073
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For #141
I'm not quite done yet, but I wanted to ask for feedback to check that the direction is alright.
For example, the change of variables
z = exp(x)
looks currently like this:Since there is not symbolic way (AFAIK) to get the inverse of general nonlinear functions, one has to
provide both: the forward and backward substitution (
forward_subs
andbackward_subs
).In the test file, I also added a Riccati ODE and a 3D linear transformation as examples.
Details:
sys.defaults
exists, then those will be transformed as well.defaults
, one needs to providet0
)Questions:
Function
s because everything else is also symbolic.Things I will add for final PR/known bugs:
length(forward_subs) < length(states(sys))
, i.e. keep old state variables.Optional ideas: